<?php

namespace common\modules\wechat\components;

use common\modules\wechat\models\Account;
use Yii;
use yii\base\InvalidConfigException;

/**
 * 微信管理后台控制器基类
 * 后台管理类虚继承此类
 *
 * @package common\modules\wechat\components
 */
class AdminController extends \common\components\AdminController
{

    /**
     * 存储管理微信的session key
     */
    const SESSION_MANAGE_WECHAT_KEY = 'session_manage_wechat';

    /**
     * 开启设置公众号验证
     *
     * @var bool
     */
    public $enableCheckWechat = true;

    /**
     * @var Account
     */
    private $_wechat;

    /**
     * 设置当前需要管理的公众号
     *
     * @param Account $wechat
     * @return bool
     */
    public function setWechat(Account $wechat)
    {
        Yii::$app->session->set(self::SESSION_MANAGE_WECHAT_KEY, $wechat->id);
        $this->_wechat = $wechat;

        return true;
    }

    /**
     * 获取当前管理的公众号
     *
     * @return Account|null
     * @throws InvalidConfigException
     */
    public function getWechat()
    {
        if ($this->_wechat === null)
        {
            $wid = Yii::$app->session->get(self::SESSION_MANAGE_WECHAT_KEY);
            /** @var Account $wechat */
            if ( ! $wid || ($wechat = Account::findOne($wid)) === null)
            {
                return false;
            }
            $this->setWechat($wechat);
        }

        return $this->_wechat;
    }
}
